package com.yunhe.sms.dao.system;

import com.yunhe.commons.dto.Pageable;
import com.yunhe.sms.entity.system.Permission;

import java.util.List;

/**
 * Created by Administrator on 2017/10/19 0019.
 */
public interface PermissionDao {
    /**
     * 增
     * @param permission
     */
    void save(Permission permission);

    /**
     * 删
     * @param id
     */
    void delete(Long id);

    /**
     * 改
     * @param permission
     */
    void update(Permission permission);

    /**
     * 查单个权限
     * @param id
     * @return
     */
    Permission find(Long id);

    /**
     * 查所有权限
     * @return
     */
    List<Permission> findAll();


    /**
     * 查某个用户有哪些权限
     * @param userId
     * @return
     */
    List<Permission> findByUser(Long userId);

    /**
     * 查某个角色有哪些权限
     * @param roleId
     * @return
     */
    List<Permission> findByRole(Long roleId);

    List<Permission> findPermiMenuByRole(Long roleId, Integer type);

    /**
     * 查询个角色用于权限的id集合
     * @param roleId
     * @return
     */
    List<Long> findIdListByRole(Long roleId);

    /**
     * 分页查询所有权限
     * @param page
     * @param size
     * @return
     */
    Pageable<Permission> findPage(Integer page, Integer size);


    public List<Permission> findListByParent(Long parentId);

    /**
     * 根据权限类型查
     * @param type
     * @return
     */
    List<Permission> finfListByType(Integer type);

    List<Permission> findButtons(Long parentId);
}
